﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ISettingsProvider.cs" company="DevDigital">
//   DevDigital
// </copyright>
// --------------------------------------------------------------------------------------------------------------------

namespace Settings.NET
{
    using System;
    using System.Linq.Expressions;

    /// <summary>
    /// Settings provider
    /// </summary>
    public interface ISettingsProvider
    {
        /// <summary>
        /// Gets a settings configuration by key
        /// </summary>
        /// <param name="key">The key.</param>
        /// <returns>The settings configuration</returns>
        ISettingConfiguration Key(string key);

        /// <summary>
        /// Gets a settings configuration by key
        /// </summary>
        /// <typeparam name="TProperty">The type of the property.</typeparam>
        /// <param name="property">The property.</param>
        /// <returns>The settings configuration</returns>
        ISettingConfiguration Key<TProperty>(Expression<Func<TProperty>> property);
        
        ISettings Keys<TValue>(Keys<TValue> keys);
    }
}